home *** CD-ROM | disk | FTP | other *** search
- \contentsline {chapter}{\numberline {1}The Linux operating system}{5}
- \contentsline {chapter}{\numberline {2}The Linux kernel}{7}
- \contentsline {chapter}{\numberline {3}The Linux libc package}{9}
- \contentsline {chapter}{\numberline {4}System calls}{11}
- \contentsline {chapter}{\numberline {5}The ``swiss army knife'' ioctl}{13}
- \contentsline {chapter}{\numberline {6}Linux Interprocess Communications}{15}
- \contentsline {section}{\numberline {6.1}Introduction}{15}
- \contentsline {section}{\numberline {6.2}Half-duplex UNIX Pipes}{15}
- \contentsline {subsection}{\numberline {6.2.1}Basic Concepts}{15}
- \contentsline {subsection}{\numberline {6.2.2}Creating Pipes in C}{17}
- \contentsline {subsection}{\numberline {6.2.3}Pipes the Easy Way!}{22}
- \contentsline {subsection}{\numberline {6.2.4}Atomic Operations with Pipes}{26}
- \contentsline {subsection}{\numberline {6.2.5}Notes on half-duplex pipes:}{26}
- \contentsline {section}{\numberline {6.3}Named Pipes (FIFOs - First In First Out)}{27}
- \contentsline {subsection}{\numberline {6.3.1}Basic Concepts}{27}
- \contentsline {subsection}{\numberline {6.3.2}Creating a FIFO}{27}
- \contentsline {subsection}{\numberline {6.3.3}FIFO Operations}{28}
- \contentsline {subsection}{\numberline {6.3.4}Blocking Actions on a FIFO}{30}
- \contentsline {subsection}{\numberline {6.3.5}The Infamous SIGPIPE Signal}{30}
- \contentsline {section}{\numberline {6.4}System V IPC}{30}
- \contentsline {subsection}{\numberline {6.4.1}Fundamental Concepts}{30}
- \contentsline {subsubsection}{IPC Identifiers}{31}
- \contentsline {subsubsection}{IPC Keys}{31}
- \contentsline {subsubsection}{The {\tt ipcs} Command}{32}
- \contentsline {subsubsection}{The {\tt ipcrm} Command}{33}
- \contentsline {subsection}{\numberline {6.4.2}Message Queues}{33}
- \contentsline {subsubsection}{Basic Concepts}{33}
- \contentsline {subsubsection}{Internal and User Data Structures}{33}
- \contentsline {paragraph}{Message buffer}{33}
- \contentsline {paragraph}{Kernel {\tt msg} structure}{34}
- \contentsline {paragraph}{Kernel {\tt msqid\_ds} structure}{35}
- \contentsline {paragraph}{Kernel {\tt ipc\_perm} structure}{36}
- \contentsline {subsubsection}{SYSTEM CALL: msgget()}{37}
- \contentsline {subsubsection}{SYSTEM CALL: msgsnd()}{38}
- \contentsline {subsubsection}{SYSTEM CALL: msgctl()}{42}
- \contentsline {subsubsection}{msgtool: An interactive message queue manipulator}{45}
- \contentsline {paragraph}{Background}{45}
- \contentsline {paragraph}{Command Line Syntax}{45}
- \contentsline {subparagraph}{Sending Messages }{45}
- \contentsline {subparagraph}{Retrieving Messages}{45}
- \contentsline {subparagraph}{Changing the Permissions (mode)}{46}
- \contentsline {subparagraph}{Deleting a Queue}{46}
- \contentsline {paragraph}{Examples}{46}
- \contentsline {paragraph}{The Source}{46}
- \contentsline {subsection}{\numberline {6.4.3}Semaphores}{49}
- \contentsline {subsubsection}{Basic Concepts}{49}
- \contentsline {subsubsection}{Internal Data Structures}{50}
- \contentsline {paragraph}{Kernel {\tt semid\_ds} structure}{50}
- \contentsline {paragraph}{Kernel {\tt sem} structure}{51}
- \contentsline {subsubsection}{SYSTEM CALL: semget()}{52}
- \contentsline {subsubsection}{SYSTEM CALL: semop()}{53}
- \contentsline {subsubsection}{SYSTEM CALL: semctl()}{55}
- \contentsline {subsubsection}{semtool: An interactive semaphore manipulator}{59}
- \contentsline {paragraph}{Background}{59}
- \contentsline {paragraph}{Command Line Syntax}{60}
- \contentsline {subparagraph}{Creating a Semaphore Set}{60}
- \contentsline {subparagraph}{Locking a Semaphore}{60}
- \contentsline {subparagraph}{Unlocking a Semaphore}{60}
- \contentsline {subparagraph}{Changing the Permissions (mode)}{60}
- \contentsline {subparagraph}{Deleting a Semaphore Set}{60}
- \contentsline {paragraph}{Examples}{60}
- \contentsline {paragraph}{The Source}{60}
- \contentsline {subsubsection}{semstat: A semtool companion program}{65}
- \contentsline {subsection}{\numberline {6.4.4}Shared Memory}{67}
- \contentsline {subsubsection}{Basic Concepts}{67}
- \contentsline {subsubsection}{Internal and User Data Structures}{67}
- \contentsline {paragraph}{Kernel {\tt shmid\_ds} structure}{68}
- \contentsline {subsubsection}{SYSTEM CALL: shmget()}{69}
- \contentsline {subsubsection}{SYSTEM CALL: shmat()}{70}
- \contentsline {subsubsection}{SYSTEM CALL: shmctl()}{71}
- \contentsline {subsubsection}{SYSTEM CALL: shmdt()}{71}
- \contentsline {subsubsection}{shmtool: An interactive shared memory manipulator}{72}
- \contentsline {paragraph}{Background}{72}
- \contentsline {paragraph}{Command Line Syntax}{72}
- \contentsline {subparagraph}{Writing strings to the segment}{72}
- \contentsline {subparagraph}{Retrieving strings from the segment}{72}
- \contentsline {subparagraph}{Changing the Permissions (mode)}{72}
- \contentsline {subparagraph}{Deleting the segment}{72}
- \contentsline {paragraph}{Examples}{72}
- \contentsline {paragraph}{The Source}{72}
- \contentsline {chapter}{\numberline {7}Sound Programming}{77}
- \contentsline {section}{\numberline {7.1}Programming the internal speaker}{77}
- \contentsline {section}{\numberline {7.2}Programming a sound card}{78}
- \contentsline {chapter}{\numberline {8}Character Cell Graphics}{79}
- \contentsline {section}{\numberline {8.1}I/O Function in libc}{80}
- \contentsline {subsection}{\numberline {8.1.1}Formatted Output}{80}
- \contentsline {subsection}{\numberline {8.1.2}Formatted Input}{81}
- \contentsline {section}{\numberline {8.2}The Termcap Library}{82}
- \contentsline {subsection}{\numberline {8.2.1}Introduction}{82}
- \contentsline {subsection}{\numberline {8.2.2}Find a Terminal Description}{83}
- \contentsline {subsection}{\numberline {8.2.3}Look at a Terminal Description}{84}
- \contentsline {subsection}{\numberline {8.2.4}Termcap Capabilities}{85}
- \contentsline {subsubsection}{Boolean Capabilities}{85}
- \contentsline {subsubsection}{Numeric Capabilities}{86}
- \contentsline {subsubsection}{String Capabilities}{86}
- \contentsline {section}{\numberline {8.3}Ncurses - Introduction}{90}
- \contentsline {section}{\numberline {8.4}Initializing}{92}
- \contentsline {section}{\numberline {8.5}Windows}{93}
- \contentsline {section}{\numberline {8.6}Output}{96}
- \contentsline {subsection}{\numberline {8.6.1}Formatted Output}{97}
- \contentsline {subsection}{\numberline {8.6.2}Insert Characters/Lines}{97}
- \contentsline {subsection}{\numberline {8.6.3}Delete Characters/Lines}{98}
- \contentsline {subsection}{\numberline {8.6.4}Boxes and Lines}{98}
- \contentsline {subsection}{\numberline {8.6.5}Background Character}{98}
- \contentsline {section}{\numberline {8.7}Input}{100}
- \contentsline {subsection}{\numberline {8.7.1}Formated Input}{101}
- \contentsline {section}{\numberline {8.8}Options}{101}
- \contentsline {subsubsection}{Output Options}{101}
- \contentsline {subsection}{\numberline {8.8.1}Input Options}{102}
- \contentsline {subsection}{\numberline {8.8.2}Terminal Attributes}{103}
- \contentsline {subsection}{\numberline {8.8.3}Use Options}{104}
- \contentsline {section}{\numberline {8.9}Clear Window and Lines}{106}
- \contentsline {section}{\numberline {8.10}Updating the Terminal}{107}
- \contentsline {section}{\numberline {8.11}Video Attributes and Color}{109}
- \contentsline {section}{\numberline {8.12}Cursor and Window Coordinates}{112}
- \contentsline {section}{\numberline {8.13}Scrolling}{112}
- \contentsline {section}{\numberline {8.14}Pads}{114}
- \contentsline {section}{\numberline {8.15}Soft-labels}{114}
- \contentsline {section}{\numberline {8.16}Miscellaneous}{115}
- \contentsline {section}{\numberline {8.17}Low-level Access}{116}
- \contentsline {section}{\numberline {8.18}Screen Dump}{116}
- \contentsline {section}{\numberline {8.19}Termcap Emulation}{116}
- \contentsline {section}{\numberline {8.20}Terminfo Functions}{117}
- \contentsline {section}{\numberline {8.21}Debug Function}{118}
- \contentsline {section}{\numberline {8.22}Terminfo Capabilities}{118}
- \contentsline {subsection}{\numberline {8.22.1}Boolean Capabilities}{118}
- \contentsline {subsection}{\numberline {8.22.2}Numbers}{119}
- \contentsline {subsection}{\numberline {8.22.3}Strings}{120}
- \contentsline {section}{\numberline {8.23}$[$N$]$Curses Function Overview}{127}
- \contentsline {chapter}{\numberline {9}Programming I/O ports}{131}
- \contentsline {section}{\numberline {9.1}Mouse Programming}{133}
- \contentsline {section}{\numberline {9.2}Modem Programming}{134}
- \contentsline {section}{\numberline {9.3}Printer Programming}{134}
- \contentsline {section}{\numberline {9.4}Joystick Programming}{134}
- \contentsline {chapter}{\numberline {10}Porting Applications to Linux}{135}
- \contentsline {section}{\numberline {10.1}Introduction}{135}
- \contentsline {section}{\numberline {10.2}Signal handling}{135}
- \contentsline {subsection}{\numberline {10.2.1}Signals under SVR4, BSD, and POSIX.1}{136}
- \contentsline {subsection}{\numberline {10.2.2}Linux signal options}{136}
- \contentsline {subsection}{\numberline {10.2.3}{\em signal\/} under Linux}{137}
- \contentsline {subsection}{\numberline {10.2.4}Signals supported by Linux}{137}
- \contentsline {section}{\numberline {10.3}Terminal I/O}{138}
- \contentsline {section}{\numberline {10.4}Process information and control}{138}
- \contentsline {subsection}{\numberline {10.4.1}{\em kvm} routines}{139}
- \contentsline {subsection}{\numberline {10.4.2}{\em ptrace} and the {\em /proc} filesystem}{139}
- \contentsline {subsection}{\numberline {10.4.3}Process control under Linux}{139}
- \contentsline {section}{\numberline {10.5}Portable conditional compilation}{140}
- \contentsline {section}{\numberline {10.6}Additional Comments}{141}
- \contentsline {chapter}{\numberline {11}Systemcalls in alphabetical order}{143}
- \contentsline {chapter}{\numberline {12}Abbreviations}{149}
-